package com.mdd.front.service;

import com.alipay.api.AlipayApiException;
import com.mdd.common.base.page.PageValidate;
import com.mdd.common.core.PageResult;
import com.mdd.front.validate.car.order.CarOrderCreateValidate;
import com.mdd.front.validate.order.OrderClueCreateValidate;
import com.mdd.front.validate.order.OrderCreateValidate;
import com.mdd.front.vo.car.CarOrderDetailVo;
import com.mdd.front.vo.car.CarOrderInfoListedVo;
import com.mdd.front.vo.order.OrderClueVo;
import com.mdd.front.vo.order.OrderInfoDetailVo;
import com.mdd.front.vo.order.OrderInfoListedVo;

/**
 * TODO
 *
 * @Description
 * @Author 幻速
 * @Date 2023/11/1 18:59
 **/
public interface IUserOrderService {
    PageResult<OrderInfoListedVo> list(Integer status , PageValidate pageValidate);
    //订单详情
    OrderInfoDetailVo detail(Long orderId);
    //取消订单
    void cancel(Long orderId) throws AlipayApiException;
    void finishPreOrder(Long orderId);
    /**
     * 创建预订单
     * @param orderCreateValidate
     */
    Long addPreOrder(OrderCreateValidate orderCreateValidate);
    OrderClueVo addOrderClue(OrderClueCreateValidate orderClueCreateValidate);
    OrderClueVo getOrderClueById(Long clueId);
    //申请售后
    void refund();

    PageResult<CarOrderInfoListedVo> carOrderPage(Integer status , Integer type, PageValidate pageValidate);

    String addDepositOrder(CarOrderCreateValidate carOrderCreateValidate) throws AlipayApiException;
    CarOrderDetailVo carOrderDetail(Long orderId);

    void cancelCarOrder(Long orderId) throws AlipayApiException;
    void refundCarOrde(Long orderId) throws AlipayApiException;
}
